λΉλ μκ° μ΅μ ν λ° λ°νμ μ€λ₯ λ°©μ§λ₯Ό μν TypeScriptμ import type ꡬ문μ μ΄ν΄λ³΄μΈμ. νμ μ μ© importμ κ·Έ μ΄μ μ μμ보μΈμ.
TypeScript Import Type: νμ μ μ© Import μ μΈμ λν μ¬μΈ΅ λΆμ
JavaScriptμ μμ μ§ν©μΈ TypeScriptλ λμ μΈ μΉ κ°λ° μΈκ³μ μ μ νμ΄νμ μ 곡ν©λλ€. μ£Όμ κΈ°λ₯ μ€ νλλ λ€λ₯Έ λͺ¨λμμ νμ
μ κ°μ Έμ¬ μ μλ€λ κ²μ
λλ€. κ·Έλ¬λ νμ
κ²μ¬μλ§ μ¬μ©λλ νμ
μ κ°μ Έμ€λ©΄ μ΅μ’
JavaScript λ²λ€μ λΆνμν μ½λκ° λ°μν μ μμ΅λλ€. μ΄λ₯Ό ν΄κ²°νκΈ° μν΄ TypeScriptλ import type ꡬ문μ λμ
νμ΅λλ€. μ΄ λΈλ‘κ·Έ κ²μλ¬Όμμλ import typeμ μμΈν μ΄ν΄λ³΄κ³ κ·Έ λͺ©μ , μ¬μ©λ², μ΄μ λ° μ μ¬μ μ£Όμ μ¬νμ μ€λͺ
ν©λλ€.
import typeμ΄λ 무μμΈκ°μ?
import typeμ λͺ¨λμ νμ
μ μλ§ κ°μ Έμ¬ μ μλ TypeScript μ μ© κ΅¬λ¬ΈμΌλ‘, λͺ¨λμ λ°νμ κ°μ κ°μ Έμ€μ§ μμ΅λλ€. μ΄λ λ€λ₯Έ λͺ¨λμ νμ
μ νμ
μ£Όμ λλ νμ
κ²μ¬μ μ¬μ©ν΄μΌ νμ§λ§ λ°νμμ ν΄λΉ κ°μ μ‘μΈμ€ν νμκ° μμ λ νΉν μ μ©ν©λλ€. JavaScript μ»΄νμΌλ¬κ° μ ν μ 보μλ§ λ
μ μ μΌλ‘ μ¬μ©λλ κ²½μ° μ»΄νμΌ μ€μ κ°μ Έμ¨ λͺ¨λμ μλ΅νλ―λ‘ λ²λ€ ν¬κΈ°κ° μ§μ μ μΌλ‘ μμμ§λλ€.
μ import typeμ μ¬μ©ν΄μΌ ν κΉμ?
import typeμ μ¬μ©ν΄μΌ νλ λͺ κ°μ§ μ€λλ ₯ μλ μ΄μ κ° μμ΅λλ€.
- ν₯μλ λ²λ€ ν¬κΈ°: νμ€
importλ¬Έμ μ¬μ©νμ¬ λͺ¨λμ κ°μ Έμ¬ λ μ 체 λͺ¨λμ΄ μμ±λ JavaScriptμ ν¬ν¨λ©λλ€. ν΄λΉ λͺ¨λμ νμ λ§ μ¬μ©νλ κ²½μ°μλ λ§μ°¬κ°μ§μ λλ€.import typeμ μ»΄νμΌ μ€μ νμ μ λ³΄λ§ μ¬μ©νκ³ μ΅μ’ λ²λ€μ λͺ¨λμ΄ ν¬ν¨λμ§ μλλ‘ νμ¬ λ μκ³ ν¨μ¨μ μΈ λ²λ€μ λ§λλλ€. - μν μ’
μμ± λ°©μ§: μν μ’
μμ±μ λκ·λͺ¨ νλ‘μ νΈμμ μ€μν λ¬Έμ κ° λ μ μμΌλ©° λ°νμ μ€λ₯ λ° μκΈ°μΉ μμ λμμΌλ‘ μ΄μ΄μ§ μ μμ΅λλ€.
import typeμ λͺ¨λμ κ°μ κ°μ Έμ€μ§ μκ³ νμ μ μλ§ κ°μ Έμ¬ μ μλλ‘ νμ¬ μν μ’ μμ±μ λλ λ° λμμ΄ λ©λλ€. λ°λΌμ κ°μ Έμ€κΈ° νλ‘μΈμ€ μ€μ λͺ¨λ μ½λμ μ€νμ λ°©μ§ν©λλ€. - ν₯μλ μ±λ₯: λ²λ€ ν¬κΈ°κ° μμμ§λ©΄ νΉν μΉ μ ν리μΌμ΄μ
μ λ‘λ μκ°μ΄ λΉ¨λΌμ§λλ€. λ²λ€μμ λΆνμν μ½λλ₯Ό μ κ±°ν¨μΌλ‘μ¨
import typeμ μ ν리μΌμ΄μ μ μ λ°μ μΈ μ±λ₯μ ν₯μμν€λ λ° λμμ΄ λ©λλ€. - ν₯μλ μ½λ λͺ
νμ±:
import typeμ μ¬μ©νλ©΄ νμ μ λ³΄λ§ κ°μ Έμ€κ³ μμμ λͺ ννκ² μ μ μμ΄ μ½λμ κ°λ μ±κ³Ό μ μ§ κ΄λ¦¬κ° ν₯μλ©λλ€. μ΄λ λ€λ₯Έ κ°λ°μμκ² κ°μ Έμ¨ λͺ¨λμ΄ νμ κ²μ¬μλ§ μ¬μ©λλ€λ κ²μ μλ €μ€λλ€.
import type μ¬μ© λ°©λ²
import typeμ ꡬ문μ κ°λ¨ν©λλ€. νμ€ import λ¬Έμ μ¬μ©νλ λμ import typeμ μ¬μ©ν λ€μ κ°μ Έμ€λ €λ νμ
μ μ¬μ©ν©λλ€. λ€μμ κΈ°λ³Έ μμ
λλ€.
import type { User } from './user';
function greetUser(user: User): string {
return `Hello, ${user.name}!`;
}
μ΄ μμμλ ./user λͺ¨λμμ User νμ
μ κ°μ Έμ€κ³ μμ΅λλ€. greetUser ν¨μμ νμ
μ£Όμμλ§ User νμ
μ μ¬μ©νκ³ μμ΅λλ€. User λͺ¨λμ κ°μ λ°νμμ μ‘μΈμ€ν μ μμ΅λλ€.
import typeκ³Ό μΌλ° Import κ²°ν©
type ν€μλλ₯Ό μ¬μ©νμ¬ λμΌν λ¬Έμ₯μμ import typeκ³Ό μΌλ° Importλ₯Ό κ²°ν©ν μλ μμ΅λλ€.
import { someValue, type User, type Product } from './module';
function processUser(user: User): void {
// ...
}
console.log(someValue);
μ΄ κ²½μ° someValueλ μΌλ° κ°μΌλ‘ κ°μ Έμ€κ³ User λ° Productλ νμ
μΌλ‘λ§ κ°μ Έμ΅λλ€. μ΄λ₯Ό ν΅ν΄ λ¨μΌ λ¬Έμ₯μμ κ°κ³Ό νμ
μ λͺ¨λ λμΌν λͺ¨λμμ κ°μ Έμ¬ μ μμ΅λλ€.
λͺ¨λ κ²μ νμ μΌλ‘ κ°μ Έμ€κΈ°
κ°μ κ°μ Έμ€μ§ μκ³ λͺ¨λμ λͺ¨λ νμ
μ κ°μ ΈμμΌ νλ κ²½μ° import typeκ³Ό λ€μμ€νμ΄μ€ κ°μ Έμ€κΈ° ꡬ문μ μ¬μ©ν μ μμ΅λλ€.
import type * as Types from './types';
function processData(data: Types.Data): void {
// ...
}
μ¬κΈ°μλ ./types λͺ¨λμ λͺ¨λ νμ
μ Types λ€μμ€νμ΄μ€λ‘ κ°μ Έμ΅λλ€. κ·Έλ° λ€μ Types. μ λμ¬λ₯Ό μ¬μ©νμ¬ νμ
μ μ‘μΈμ€ν μ μμ΅λλ€.
λ€μν νλ‘μ νΈ μ νμ μ
import typeμ μ΄μ μ λ€μν νλ‘μ νΈ μ νμ μ μ©λ©λλ€. λͺ κ°μ§ μλ λ€μκ³Ό κ°μ΅λλ€.
μ 1: React μ»΄ν¬λνΈ
νΉμ νμ μ κ°μ§ propsλ₯Ό λ°λ React μ»΄ν¬λνΈλ₯Ό κ³ λ €ν΄ λ³΄μΈμ.
import React from 'react';
import type { User } from './user';
interface Props {
user: User;
}
const UserProfile: React.FC<Props> = ({ user }) => {
return (
<div>
<h2>User Profile</h2>
<p>Name: {user.name}</p>
<p>Email: {user.email}</p>
</div>
);
};
export default UserProfile;
μ΄ React μμμλ `import type { User } from './user';`λ₯Ό μ¬μ©νμ¬ `User`μ νμ μ μλ§ κ°μ Έμ λ²λ€ ν¬κΈ°λ₯Ό μ΅μ νν©λλ€. 'user' λͺ¨λμ κ°μ μ§μ μ¬μ©νμ§ μμ΅λλ€. 'user' λͺ¨λμ μ μλ 'User' *νμ *λ§ μ¬μ©ν©λλ€.
μ 2: Node.js λ°±μλ
Node.js λ°±μλ μ ν리μΌμ΄μ μμλ λ°μ΄ν°λ² μ΄μ€ λͺ¨λΈμ νμ μΌλ‘ μ μν μ μμ΅λλ€.
import type { User } from './models';
import { createUser } from './db';
async function registerUser(userData: User): Promise<void> {
await createUser(userData);
}
μ¬κΈ°μ `import type { User } from './models';`λ User νμ
λ§ νμ
κ²μ¬μ νμν κ²½μ° μ 체 models λͺ¨λμ λ²λ€μ ν¬ν¨νλ κ²μ λ°©μ§ν©λλ€. createUser ν¨μλ *λ°νμ* μ¬μ©μ νμνλ―λ‘ κ°μ Έμ΅λλ€.
μ 3: Angular μλΉμ€
Angular μλΉμ€μμλ νμ μ μ¬μ©νλ μλΉμ€λ₯Ό μ£Όμ ν μ μμ΅λλ€.
import { Injectable } from '@angular/core';
import type { Product } from './product.model';
import { ProductService } from './product.service';
@Injectable({
providedIn: 'root',
})
export class OrderService {
constructor(private productService: ProductService) {}
getFeaturedProducts(): Product[] {
return this.productService.getProducts().filter(p => p.isFeatured);
}
}
Product νμ
μ productService.getProducts() λ©μλμμ λ°νλλ λ°μ΄ν°μ ꡬ쑰λ₯Ό μ μνλ λ° μ¬μ©λ©λλ€. `import type { Product } from './product.model';`μ μ¬μ©νλ©΄ νμ
μ λ³΄λ§ κ°μ Έμ Angular μ ν리μΌμ΄μ
μ μ±λ₯μ ν₯μμν¬ μ μμ΅λλ€. ProductServiceλ λ°νμ μ’
μμ±μ
λλ€.
λ€μν κ°λ° νκ²½μμ import type μ¬μ©μ μ΄μ
import typeμ μ¬μ©νλ μ΄μ μ λ€μν κ°λ° μ€μ μ κ±Έμ³ νμ₯λ©λλ€.
- λͺ¨λ
Έλ ν¬: λͺ¨λ
Έλ ν¬ κ΅¬μ‘° λ΄μμ
import typeμ κ°λ³ ν¨ν€μ§ λ²λ€μ ν¬κΈ°λ₯Ό μ€μ¬ λΉλ μκ°μ λ¨μΆνκ³ λ¦¬μμ€ νμ©λλ₯Ό λμ λλ€. - λ§μ΄ν¬λ‘μλΉμ€: λ§μ΄ν¬λ‘μλΉμ€ μν€ν
μ²μμ
import typeμ νμν νμ μ λ³΄λ§ κ°μ Έμ€λλ‘ νμ¬ μ’ μμ± κ΄λ¦¬λ₯Ό λ¨μννκ³ μλΉμ€μ λͺ¨λμ±μ ν₯μμν΅λλ€. - μλ²λ¦¬μ€ ν¨μ: μλ²λ¦¬μ€ ν¨μ νκ²½μμ
import typeμ ν¨μ λ°°ν¬ ν¨ν€μ§ ν¬κΈ°λ₯Ό μ€μ¬ μ½λ μ€ννΈ μκ°μ λ¨μΆνκ³ λ¦¬μμ€ μλΉλ₯Ό μ΅μ νν©λλ€. - ν¬λ‘μ€ νλ«νΌ κ°λ°: μΉ, λͺ¨λ°μΌ λλ λ°μ€ν¬ν± νλ«νΌμ©μΌλ‘ κ°λ°νλ
import typeμ λ€μν νκ²½μμ μΌκ΄λ νμ κ²μ¬λ₯Ό 보μ₯νκ³ λ°νμ μ€λ₯ κ°λ₯μ±μ μ€μ λλ€.
μ μ¬μ μ£Όμ μ¬ν
import typeμ μΌλ°μ μΌλ‘ μ μ΅νμ§λ§ λͺ κ°μ§ μ£Όμν΄μΌ ν μ¬νμ΄ μμ΅λλ€.
- TypeScript λ²μ μꡬ μ¬ν:
import typeμ TypeScript 3.8μ λμ λμμ΅λλ€. μ΄ κ΅¬λ¬Έμ μ¬μ©νλ €λ©΄ μ΅μν μ΄ λ²μ μ TypeScriptλ₯Ό μ¬μ©ν΄μΌ ν©λλ€. - λ°νμ μ¬μ©:
import typeμΌλ‘ κ°μ Έμ¨ κ°μ λ°νμμ μ¬μ©ν μ μμ΅λλ€. λ°νμμ λͺ¨λμ κ°μ μ‘μΈμ€ν΄μΌ νλ κ²½μ° μΌλ°importλ¬Έμ μ¬μ©ν΄μΌ ν©λλ€.import typeμΌλ‘ κ°μ Έμ¨ κ°μ λ°νμμ μ¬μ©νλ €κ³ νλ©΄ μ»΄νμΌ μκ° μ€λ₯κ° λ°μν©λλ€. - νΈλμ€νμΌλ¬ λ° λ²λ€λ¬: νΈλμ€νμΌλ¬(μ: Babel) λ° λ²λ€λ¬(μ: Webpack, Rollup, Parcel)κ°
import typeλ¬Έμ μ¬λ°λ₯΄κ² μ²λ¦¬νλλ‘ κ΅¬μ±λμλμ§ νμΈνμΈμ. λλΆλΆμ μ΅μ λꡬλimport typeμ λ°λ‘ μ§μνμ§λ§ ꡬμ±μ λ€μ νμΈνλ κ²μ΄ μ’μ΅λλ€. μΌλΆ μ΄μ λꡬλ μ΄λ¬ν Importλ₯Ό μ¬λ°λ₯΄κ² μ κ±°νκΈ° μν΄ νΉμ νλ¬κ·ΈμΈμ΄λ ꡬμ±μ΄ νμν μ μμ΅λλ€.
import type μ¬μ© λͺ¨λ² μ¬λ‘
import typeμ ν¨κ³Όμ μΌλ‘ μ¬μ©νλ €λ©΄ λ€μ λͺ¨λ² μ¬λ‘λ₯Ό κ³ λ €νμΈμ.
- κ°λ₯ν κ²½μ°
import typeμ¬μ©: λͺ¨λμ νμ μ μμ λν΄μλ§ μ¬μ©νλ κ²½μ° νμimport typeμ μ¬μ©νμΈμ. μ΄λ κ² νλ©΄ λ²λ€ ν¬κΈ°λ₯Ό μ€μ΄κ³ μ±λ₯μ ν₯μμν¬ μ μμ΅λλ€. import typeκ³Ό μΌλ° Import κ²°ν©: λμΌν λͺ¨λμμ κ°κ³Ό νμ μ λͺ¨λ κ°μ Έμ¬ λ κ²°ν©λ ꡬ문μ μ¬μ©νμ¬ μ½λλ₯Ό κ°κ²°νκ³ μ½κΈ° μ½κ² μ μ§νμΈμ.- νμ
μ μ λΆλ¦¬: νμ
μ μλ₯Ό λ³λμ νμΌμ΄λ λͺ¨λμ μ μ§νλ κ²μ κ³ λ €νμΈμ. μ΄λ κ² νλ©΄
import typeμ μ¬μ©νμ¬ νμν νμ λ§ μλ³νκ³ κ°μ Έμ€κΈ° μ½μ΅λλ€. - Import μ κΈ°μ μΌλ‘ κ²ν : νλ‘μ νΈκ° νμ₯λ¨μ λ°λΌ Importλ₯Ό μ κΈ°μ μΌλ‘ κ²ν νμ¬ λΆνμν λͺ¨λμ΄λ κ°μ κ°μ Έμ€μ§ μλλ‘ νμΈμ. μ μ ν κ·μΉμ΄ μλ ESLintμ κ°μ λꡬλ₯Ό μ¬μ©νμ¬ μ΄ νλ‘μΈμ€λ₯Ό μλννλ λ° λμμ λ°μ μ μμ΅λλ€.
- μ¬μ©λ² λ¬Έμν: νΉμ μ¬λ‘μμ
import typeμ μ¬μ©νλ μ΄μ λ₯Ό μ€λͺ νλ μ£Όμμ μ½λμ μΆκ°νμΈμ. μ΄λ κ² νλ©΄ λ€λ₯Έ κ°λ°μκ° μλλ₯Ό μ΄ν΄νκ³ μ½λλ₯Ό λ μ½κ² μ μ§ κ΄λ¦¬νλ λ° λμμ΄ λ©λλ€.
κ΅μ ν(i18n) λ° νμ§ν(l10n) κ³ λ € μ¬ν
κ΅μ ν(i18n) λ° νμ§ν(l10n)κ° νμν νλ‘μ νΈ μμ
μ ν λλ import typeμ΄ μ½λμ λ―ΈμΉλ μν₯μ κ³ λ €νλ κ²μ΄ μ€μν©λλ€. λͺ
μ¬ν΄μΌ ν λͺ κ°μ§ μ¬νμ λ€μκ³Ό κ°μ΅λλ€.
- λ²μλ λ¬Έμμ΄μ λν νμ
μ μ: νμ
μ μλ₯Ό μ¬μ©νμ¬ λ²μλ λ¬Έμμ΄μ λνλ΄λ κ²½μ°
import typeμ μ¬μ©νμ¬ μ€μ λ²μ νμΌμ λ²λ€μ ν¬ν¨νμ§ μκ³ μ΄λ¬ν νμ μ κ°μ Έμ¬ μ μμ΅λλ€. μ΄λ κ² νλ©΄ λ²λ€ ν¬κΈ°λ₯Ό μ€μ΄κ³ νΉν λ²μλμ΄ λ§μ κ²½μ° μ±λ₯μ ν₯μμν¬ μ μμ΅λλ€. - λ‘μΌμΌλ³ νμ
: λ‘μΌμΌμ λ°λΌ λ€λ₯Έ νμ
μ μκ° μμ μ μμ΅λλ€.
import typeμ μ¬μ©νλ©΄ λ€λ₯Έ λ‘μΌμΌμ λν νμ μ μλ₯Ό ν¬ν¨νμ§ μκ³ λμ λ‘μΌμΌμ λν νμ μ μλ₯Ό μ νμ μΌλ‘ κ°μ Έμ¬ μ μμ΅λλ€. - λ‘μΌμΌ λ°μ΄ν°μ λν λμ Import: κ²½μ°μ λ°λΌ λ°νμμ λ‘μΌμΌλ³ λ°μ΄ν°λ₯Ό λμ μΌλ‘ λ‘λν΄μΌ ν μ μμ΅λλ€. μ΄λ¬ν μλ리μ€μμλ λ°μ΄ν°μ λν΄ μΌλ°
importλ¬Έμ μ¬μ©νκ³ κ΄λ ¨ νμ μ μμ λν΄import typeμ μ¬μ©ν μ μμ΅λλ€.
λ€μν κ΅κ°μ μ
λ€μν μλ리μ€μμ import typeμ μ¬μ©νλ λ°©λ²μ 보μ¬μ£Όλ λͺ κ°μ§ μλ λ€μκ³Ό κ°μ΅λλ€.
- μ μ μκ±°λ νλ«νΌ(κΈλ‘λ²): μ μΈκ³μ μΌλ‘ μ νμ νλ§€νλ μ μ μκ±°λ νλ«νΌμ
import typeμ μ¬μ©νμ¬ μ ν μ νμ μ μν©λλ€. μ΄λ₯Ό ν΅ν΄ μ ν λ°μ΄ν° νμ μ μ§μμ κ΄κ³μμ΄ μΌκ΄μ±μ μ μ§νλ©΄μ λ²λ€ ν¬κΈ°λ₯Ό μ€μΌ μ μμ΅λλ€. μλ₯Ό λ€μ΄:μ΄ μ κ·Ό λ°©μμ μ¬μ©μμ μμΉμ κ΄κ³μμ΄ μΌκ΄λ λ°μ΄ν° νμ΄νμ 보μ₯ν©λλ€.import type { Product } from './product.types'; function displayProductDetails(product: Product) { // ... } - μλ£ μ±(λ
μΌ): λ
μΌμ μλ£ μ ν리μΌμ΄μ
μ
import typeμ μ¬μ©νμ¬ νμ λ°μ΄ν° νμ μ μ μν©λλ€. μ΄λ λΆνμν μ½λκ° λ²λ€μ ν¬ν¨λλ κ²μ μ΅μννμ¬ νμ§ λ°μ΄ν° κ°μΈ μ 보 λ³΄νΈ κ·μ (μ: GDPR)μ μ€μνλλ‘ ν©λλ€.import type { Patient } from './patient.types'; function anonymizePatientData(patient: Patient) { // ... } - κ΅μ‘ νλ«νΌ(μΌλ³Έ): μΌλ³Έμ κ΅μ‘ νλ«νΌμ
import typeμ μ¬μ©νμ¬ κ°μ μλ£ μ νμ μ μν©λλ€. μ΄λ νΉν λλμ μ½ν μΈ λ₯Ό μ²λ¦¬ν λ νλ«νΌ μ±λ₯μ μ΅μ ννλ λ° λμμ΄ λ©λλ€.import type { CourseMaterial } from './course.types'; function renderCourseMaterial(material: CourseMaterial) { // ... } - κΈμ΅ μλΉμ€ μ±(λΈλΌμ§): λΈλΌμ§μ κΈμ΅ μλΉμ€ μ ν리μΌμ΄μ
μ
import typeμ μ¬μ©νμ¬ κ±°λ μ νμ μ μν©λλ€. μ΄λ λ°μ΄ν° μΌκ΄μ±μ 보μ₯νκ³ λ²λ€ ν¬κΈ°λ₯Ό μ΅μννμ¬ μ ν리μΌμ΄μ μ ν¨μ¨μ±κ³Ό μ λ’°μ±μ ν₯μμν΅λλ€.import type { Transaction } from './transaction.types'; function processTransaction(transaction: Transaction) { // ... }
κ²°λ‘
import typeμ TypeScriptμ κ°λ ₯ν κΈ°λ₯μΌλ‘, λͺ¨λμ λ°νμ κ°μ κ°μ Έμ€μ§ μκ³ νμ
μ μλ§ κ°μ Έμ μ½λλ₯Ό μ΅μ νν μ μμ΅λλ€. μ΄λ₯Ό ν΅ν΄ λ²λ€ ν¬κΈ°λ₯Ό κ°μ νκ³ , μν μ’
μμ±μ μ€μ΄λ©°, μ±λ₯μ ν₯μμν€κ³ , μ½λ λͺ
νμ±μ λμΌ μ μμ΅λλ€. μ΄ λΈλ‘κ·Έ κ²μλ¬Όμ μ€λͺ
λ λͺ¨λ² μ¬λ‘λ₯Ό λ°λ₯΄λ©΄ import typeμ ν¨κ³Όμ μΌλ‘ μ¬μ©νμ¬ λ ν¨μ¨μ μ΄κ³ μ μ§ κ΄λ¦¬ κ°λ₯ν TypeScript μ½λλ₯Ό μμ±ν μ μμ΅λλ€. TypeScriptκ° κ³μ λ°μ ν¨μ λ°λΌ νμ₯ κ°λ₯νκ³ μ±λ₯μ΄ λ°μ΄λ μ ν리μΌμ΄μ
μ ꡬμΆνλ €λ©΄ import typeκ³Ό κ°μ κΈ°λ₯μ μ±ννλ κ²μ΄ μ€μν©λλ€.